package org.patterns.creational.prototype.shallowclone;

/**
 * Attachment类代表一个附件对象，它实现了Cloneable接口以支持对象的复制
 */
public class Attachment implements Cloneable {

    private String name; //附件名

    /**
     * 设置附件的名称
     * @param name 附件的名称
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取附件的名称
     * @return 附件的名称
     */
    public String getName() {
        return this.name;
    }

    /**
     * 模拟附件下载的功能，输出下载信息
     */
    public void download() {
        System.out.println("下载附件，文件名为" + name);
    }

    /**
     * 创建当前附件对象的一个副本
     * @return 当前附件对象的副本，如果复制不支持则返回null
     */
    public Attachment clone() {
        Object obj = null;
        try {
            // 使用Object类的clone方法创建当前对象的副本
            obj = super.clone();
            return (Attachment) obj;
        } catch (CloneNotSupportedException e) {
            // 如果当前类不支持Cloneable接口，则抛出此异常
            System.out.println("不支持复制！");
            return null;
        }
    }
}

